On networks, there are network devices that provide connectivity to other devices and networks. Some of these network devices include, for example, firewalls, network address translation (NAT) devices, Web caches, traffic shapers, wide area network (WAN) accelerators, and the like. Some network devices terminate a Transmission Control Protocol (TCP) stream locally and then create separate connections to devices outside of the local network to fulfill requests associated with the stream.
For example, a Web cache may receive a request for a Web page and may satisfy the request immediately if the page is cached on the Web cache. Otherwise, the Web cache may connect to a server having the desired content, retrieve the content, and then satisfy the request. From the requestor's point of view, however, the Web cache is the only device with which the requester needs to interact to obtain the Web page.
In all currently-known implementations, network devices that terminate streams, terminate the streams from the beginning of the communication. This means that the network device sees the stream from the time the stream is initiated to successfully terminate the stream. In these implementations, once a stream is started, there is no way to insert a different device in the established stream.